/*******************************************************************************
* Copyright (c) 2006, 2015 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
*     IBM Corporation - initial API and implementation
*********************************************************************************/

// This file was generated by LPG

package org.eclipse.cdt.internal.core.dom.lrparser.gcc;

public class GCCSizeofExpressionParserprs implements lpg.lpgjavaruntime.ParseTable, GCCSizeofExpressionParsersym {

    public interface IsKeyword {
        public final static byte isKeyword[] = {0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0
        };
    };
    public final static byte isKeyword[] = IsKeyword.isKeyword;
    public final boolean isKeyword(int index) { return isKeyword[index] != 0; }

    public interface BaseCheck {
        public final static short baseCheck[] = {0,
            0,0,1,1,1,1,1,1,1,1,
            1,1,1,1,1,1,1,1,3,1,
            1,4,4,3,3,2,2,4,1,0,
            1,1,2,2,2,2,2,2,2,2,
            2,1,4,1,3,3,3,1,3,3,
            1,3,3,1,3,3,3,3,1,3,
            3,1,3,1,3,1,3,1,3,1,
            3,1,5,1,3,3,3,3,3,3,
            3,3,3,3,3,1,1,2,1,0,
            1,3,1,1,1,1,1,1,1,1,
            3,4,3,2,4,1,2,1,1,1,
            2,5,7,5,1,0,7,2,5,9,
            8,3,2,2,2,3,2,4,2,2,
            2,2,2,1,1,1,1,2,1,2,
            2,2,1,2,2,1,2,2,1,2,
            2,1,2,2,1,3,1,3,1,1,
            1,1,1,1,1,1,1,1,1,1,
            1,1,1,1,1,1,1,1,1,6,
            8,0,0,1,1,3,3,3,0,1,
            0,1,2,4,2,1,1,1,3,1,
            1,2,3,7,8,0,1,0,1,3,
            1,3,1,1,1,1,1,1,3,1,
            1,1,1,1,3,1,2,2,1,5,
            3,1,3,5,1,3,1,3,2,4,
            3,5,4,6,6,3,5,1,3,4,
            5,6,0,1,2,1,3,1,1,3,
            2,1,1,1,1,2,1,2,3,1,
            1,1,3,1,2,2,2,3,4,5,
            1,1,7,3,0,0,1,1,3,3,
            4,1,1,2,3,2,3,2,1,0,
            1,2,1,1,1,1,1,2,1,3,
            6,4,2,4,1,1,1,1,2,6,
            3,1,3,1,4,0,1,1,1,3,
            1,0,4,3,1,2,1,3,4,4,
            4,6,1,0,1,3,1,3,0,1,
            4,5,2,2,3,3,5,3,4,3,
            1,2,2,2,4,2,1,1,2,2,
            3,2,2,3,1,1,1,1,1,1,
            1,2,5,3,1,1,1,-39,0,0,
            0,0,0,0,-35,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,-241,0,-2,0,-80,-118,-240,0,0,
            0,-31,0,-173,0,-41,0,0,0,0,
            0,0,-17,0,0,0,0,0,0,0,
            0,0,0,0,-52,0,0,0,0,0,
            0,-287,0,0,0,0,0,0,-40,0,
            0,0,0,0,-4,0,-170,0,0,0,
            0,0,-75,0,0,0,0,0,0,0,
            0,-16,0,-18,-1,0,0,0,0,0,
            0,0,0,-119,-33,0,0,0,0,0,
            0,0,-19,0,0,0,0,0,0,0,
            0,0,-125,0,0,0,0,-176,-20,0,
            -21,0,0,0,0,0,0,-199,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,-281,0,0,0,0,
            0,0,0,0,0,0,0,-134,0,-260,
            -289,0,0,0,0,0,0,0,0,-32,
            0,-232,0,0,0,-22,0,-250,-278,0,
            0,0,0,0,0,0,0,0,0,0,
            -81,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,-61,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            -136,0,0,0,0,0,0,0,-8,0,
            0,0,0,0,0,0,0,0,-130,0,
            -273,0,0,-220,0,0,0,0,-283,0,
            0,0,0,0,0,0,0,0,0,0,
            -138,0,0,0,0,0,0,0,0,0,
            0,0,-297,0,-23,0,-311,0,0,0,
            0,0,0,-24,0,0,0,0,0,0,
            0,-159,0,0,0,0,0,0,0,0,
            0,-310,0,0,0,0,-25,0,-36,-53,
            0,0,0,0,0,0,0,0,0,0,
            -78,0,0,0,0,0,0,0,0,0,
            0,0,0,0,-147,0,0,0,0,0,
            0,0,0,0,0,-139,0,0,-252,0,
            0,0,0,0,0,-305,0,0,0,0,
            0,0,-148,0,0,0,0,0,0,0,
            0,0,-140,0,-155,0,-3,0,0,0,
            0,0,0,-26,0,0,0,0,0,-149,
            0,-186,0,0,0,0,0,0,0,0,
            0,-284,0,0,-124,0,0,0,0,0,
            0,0,0,0,0,0,-27,0,-28,-168,
            0,0,0,0,0,0,0,0,0,0,
            -83,0,-157,0,0,0,0,0,0,-248,
            0,0,0,0,-123,-84,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,-187,0,-46,0,0,0,0,0,
            0,0,0,0,0,0,-169,0,0,0,
            0,0,0,0,0,0,0,0,0,-204,
            0,-85,0,0,0,0,0,0,0,0,
            -313,0,-94,0,-318,0,0,0,0,0,
            0,-164,0,0,0,0,-99,0,0,-222,
            0,0,0,0,0,0,0,0,-163,-243,
            0,0,-29,0,0,0,0,0,0,-37,
            0,0,0,0,-315,0,-100,-244,0,0,
            0,0,0,0,0,0,-101,-288,-102,0,
            -103,0,0,0,-62,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,-233,
            0,0,0,0,0,0,0,0,0,0,
            0,0,-63,0,0,0,0,0,0,-181,
            0,0,0,0,0,0,0,-104,0,0,
            0,0,0,0,0,0,-105,0,-263,0,
            -64,0,0,0,0,0,0,-183,0,0,
            0,0,0,-245,0,-299,0,0,0,0,
            0,0,0,0,0,-106,-303,0,-65,0,
            0,0,0,0,0,-201,0,0,0,0,
            -312,0,0,-320,0,0,0,0,0,0,
            0,0,0,-107,0,0,-66,0,0,0,
            0,0,0,-218,0,0,0,0,-334,0,
            0,-108,0,0,0,0,0,0,0,0,
            -109,0,-328,0,-67,0,0,0,0,0,
            0,-242,0,0,0,0,-343,-256,0,-110,
            0,0,0,0,0,0,0,0,0,0,
            -111,0,-68,0,0,0,0,0,0,-255,
            0,0,0,0,-112,-280,0,-113,0,0,
            0,0,0,0,0,0,-114,0,-115,0,
            -69,0,0,0,0,0,0,0,0,0,
            0,0,-116,-295,-117,-120,0,0,0,0,
            0,0,0,0,-122,-133,-143,0,-70,0,
            0,0,0,0,0,0,0,0,0,0,
            -150,-319,-151,-153,0,0,0,0,0,0,
            0,0,-154,-294,-156,0,-71,0,0,0,
            0,0,0,0,0,0,0,0,-158,-165,
            -174,-178,0,0,0,0,0,0,0,0,
            -182,-302,-185,0,-72,0,0,0,0,0,
            0,0,0,0,0,0,-190,-194,-207,-195,
            0,0,0,0,0,0,0,0,-96,0,
            -197,0,-5,0,0,0,0,0,0,-126,
            0,0,0,0,-213,-215,-161,0,0,0,
            0,0,0,0,0,0,0,0,-325,-225,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,-6,0,0,0,0,0,
            0,0,0,0,0,-237,-60,0,0,0,
            0,0,0,0,0,0,0,0,-239,-261,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,-73,0,0,0,-262,-271,-272,
            -282,0,-162,0,0,0,0,0,0,-286,
            0,0,0,0,-301,-304,-309,0,0,0,
            0,0,0,0,0,0,-322,-330,0,0,
            -202,0,0,0,0,0,0,-335,0,0,
            0,0,0,-219,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,-203,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,-208,0,0,-229,0,0,0,
            0,0,0,-74,0,0,0,0,-128,-131,
            -171,-179,0,0,0,0,0,0,0,0,
            -285,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,-296,0,0,
            0,0,0,0,0,0,0,0,0,-132,
            0,0,-184,0,0,0,0,0,0,0,
            0,-314,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,-321,0,
            0,0,0,0,0,0,0,0,0,0,
            -211,-259,0,0,0,0,0,0,0,0,
            0,0,-333,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,-177,0,0,
            0,0,0,0,0,0,0,0,0,-337,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,-135,0,0,0,0,0,
            0,0,0,0,-98,0,0,0,0,0,
            0,0,-127,0,0,0,0,0,0,-160,
            0,-145,0,0,0,0,0,-212,0,0,
            0,0,0,0,-231,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,-137,0,0,0,0,0,
            0,0,-214,0,-224,-198,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,-141,0,0,0,0,0,0,
            -249,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,-47,
            0,0,0,0,0,0,0,0,0,0,
            0,-92,0,0,0,0,0,0,0,0,
            -306,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,-332,0,0,
            -34,-223,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,-79,0,
            0,-265,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,-226,0,0,
            0,0,0,0,-258,-293,-189,0,0,0,
            0,0,0,0,-227,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,-172,0,-257,
            0,0,0,0,0,-87,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,-274,0,0,0,0,0,-246,0,
            0,0,-251,0,0,0,0,0,0,0,
            0,0,0,0,0,0,-167,-191,0,0,
            0,-206,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,-253,0,0,0,
            -48,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,-336,-254,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,-270,0,0,0,0,0,0,0,
            0,0,0,0,-49,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,-291,0,0,-57,0,0,
            0,0,0,0,0,0,0,0,0,0,
            -323,0,0,0,0,0,0,0,0,-300,
            0,0,0,0,0,0,0,0,-58,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            -279,0,0,0,0,0,0,0,0,-235,
            0,0,0,0,0,0,0,-316,0,0,
            0,0,0,0,0,0,0,0,0,-50,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,-308,0,
            0,-76,0,0,0,0,0,0,-317,0,
            0,0,0,0,-54,0,0,0,0,0,
            0,-82,0,0,0,0,0,-326,-331,0,
            0,0,0,0,0,0,0,-341,0,0,
            0,0,0,0,0,0,0,0,-210,0,
            -129,0,0,0,0,0,-216,0,0,0,
            0,0,0,0,0,0,-152,0,0,0,
            0,0,-342,0,0,0,0,0,0,0,
            0,0,-205,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,-193,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,-86,0,-196,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,-228,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,-230,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            -234,0,0,0,0,0,0,0,0,-247,
            -266,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,-268,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,-269,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,-329,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,-340,0,
            0,-192,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,-345,0,
            0,-221,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,-267,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,-55,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,-56,0,0,0,
            0,0,0,-121,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,-51,
            0,0,0,0,0,0,-88,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,-42,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,-91,0,0,
            0,-93,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,-236,0,
            0,0,0,0,0,0,-95,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,-7,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            -9,0,0,0,0,0,0,0,0,0,
            0,0,0,-10,0,0,0,0,0,0,
            0,0,-11,0,0,0,0,0,0,0,
            0,-12,0,0,0,0,0,0,0,0,
            -13,0,0,0,0,0,0,-30,0,0,
            -38,0,0,0,0,-275,0,0,-43,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,-44,
            0,0,0,0,0,0,0,0,-45,0,
            0,0,0,0,0,0,0,0,0,-144,
            0,0,0,0,-77,0,0,0,-209,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,-188,0,0,0,-238,0,0,0,-14,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,-277,0,
            0,0,0,0,0,0,0,-89,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,-15,0,0,
            0,0,0,0,0,0,0,0,0,-90,
            0,0,0,0,0,0,0,0,0,-217,
            0,0,0,0,0,0,0,0,0,0,
            -97,0,0,0,0,0,0,0,-142,0,
            0,0,0,0,0,-166,0,0,0,-180,
            0,0,0,0,-200,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,-290,0,0,-292,0,-276,0,0,0,
            -175,0,0,0,0,-59,-324,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,-146,-338,0,0,
            0,0,0,0,0,0,0,0,-264,0,
            0,0,0,0,0,0,0,0,0,0,
            -298,0,0,0,0,0,0,0,-307,-327,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,-339,
            0,0,0,0,0,0,0,0,-344,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0
        };
    };
    public final static short baseCheck[] = BaseCheck.baseCheck;
    @Override
    public final int baseCheck(int index) { return baseCheck[index]; }
    public final static short rhs[] = baseCheck;
    @Override
    public final int rhs(int index) { return rhs[index]; };

    public interface BaseAction {
        public final static char baseAction[] = {
            117,7,118,41,41,24,24,50,50,26,
            26,1,1,2,2,2,2,3,3,3,
            4,5,5,5,5,5,5,5,5,80,
            80,94,6,6,6,6,6,6,6,6,
            6,6,8,8,9,9,9,9,10,10,
            10,11,11,11,16,16,16,16,16,17,
            17,17,18,18,19,19,20,20,21,21,
            22,22,23,23,27,27,27,27,27,27,
            27,27,27,27,27,27,34,30,25,119,
            119,95,95,58,35,35,35,35,35,35,
            35,36,36,36,29,29,96,96,71,71,
            37,37,38,38,38,67,67,39,39,39,
            39,39,40,40,40,40,40,66,66,31,
            31,31,31,31,53,53,53,103,103,98,
            98,98,98,99,99,99,100,100,100,101,
            101,101,102,102,102,97,97,85,85,86,
            54,56,56,56,56,56,72,73,73,73,
            73,73,73,73,73,73,73,73,73,84,
            81,81,120,121,87,87,82,82,82,88,
            104,104,105,105,89,89,89,60,122,122,
            106,90,90,90,83,83,123,107,107,108,
            108,91,91,32,33,33,33,55,51,51,
            42,42,42,42,45,45,47,43,43,44,
            48,48,124,124,46,143,143,125,125,52,
            52,52,52,52,52,52,52,52,109,61,
            61,61,61,49,75,75,74,74,74,76,
            76,69,69,126,126,79,79,77,77,77,
            62,62,62,63,64,64,64,65,65,65,
            65,68,68,57,57,59,128,127,127,127,
            127,110,129,130,130,131,131,132,132,144,
            144,145,145,146,146,146,146,148,148,147,
            147,147,78,133,133,12,12,12,28,28,
            13,13,134,134,111,111,111,112,112,135,
            135,113,113,14,14,136,136,114,114,114,
            114,15,70,137,137,138,138,115,115,115,
            92,92,92,6,6,16,16,23,3,36,
            139,116,116,116,93,93,31,66,53,86,
            86,86,106,106,106,123,120,121,49,88,
            131,131,140,141,110,71,117,117,331,913,
            17,21,18,482,829,560,44,503,484,521,
            368,315,316,317,519,685,586,717,694,827,
            794,74,1851,1380,443,91,521,901,1429,358,
            135,213,672,31,1319,179,1647,20,17,21,
            18,482,42,500,44,927,368,315,316,317,
            388,137,134,136,160,1647,20,17,21,18,
            482,42,1872,44,503,1084,135,213,87,398,
            139,166,395,950,197,629,1635,1279,275,143,
            146,149,152,645,28,1896,1186,137,134,136,
            160,361,1825,465,451,517,2182,2286,2577,2608,
            2612,1279,787,2731,249,462,139,166,1156,255,
            213,939,787,876,2637,143,146,149,152,104,
            87,1896,719,645,22,386,25,361,753,302,
            89,37,2182,2286,2577,2608,2612,1279,1551,20,
            17,21,18,482,829,412,44,503,484,521,
            2637,1371,452,293,519,685,586,717,694,827,
            794,74,659,381,241,281,1445,20,17,21,
            18,482,829,412,44,503,484,521,908,2920,
            1469,1905,519,685,586,717,694,827,794,74,
            672,31,1685,281,294,282,38,1186,753,1575,
            20,17,21,18,482,829,287,44,503,484,
            521,369,414,255,213,519,685,586,717,694,
            827,794,74,282,1464,1186,281,1647,20,17,
            21,18,482,42,289,44,503,484,521,322,
            1295,672,187,519,685,586,717,1185,288,1647,
            20,17,21,18,482,42,282,40,1186,1747,
            1184,398,1658,276,1661,418,2951,158,1771,1599,
            20,17,21,18,482,829,290,44,503,484,
            521,672,186,278,24,519,685,586,717,694,
            827,794,74,672,1350,444,281,1623,20,17,
            21,18,482,829,543,44,503,484,521,323,
            1295,313,1428,519,685,586,717,694,827,794,
            74,28,301,1186,281,312,282,541,1186,560,
            1647,20,17,21,18,482,42,384,44,503,
            1102,1397,20,17,21,18,482,829,1290,44,
            503,484,521,2162,282,783,1186,519,685,586,
            717,694,827,794,74,291,1862,1251,513,1743,
            20,17,21,18,482,829,1722,44,503,484,
            521,124,239,783,210,519,685,586,717,694,
            827,794,74,672,188,783,331,1647,20,17,
            21,18,482,829,416,44,503,484,521,123,
            672,873,783,519,685,586,717,694,827,794,
            74,111,672,296,91,1719,20,17,21,18,
            482,829,1937,44,503,484,521,888,126,1727,
            645,519,685,586,717,694,827,794,74,1281,
            283,554,830,1647,20,17,21,18,482,42,
            1747,44,503,484,521,739,999,2942,348,519,
            685,586,717,694,827,794,93,319,315,316,
            317,243,329,783,231,1647,20,17,21,18,
            482,42,465,44,503,484,967,1421,20,17,
            21,18,482,829,2045,44,503,484,521,122,
            645,1270,1047,519,685,586,717,694,827,794,
            74,672,298,1499,900,1743,20,17,21,18,
            482,829,249,44,503,484,521,1086,240,528,
            783,519,685,586,717,694,827,794,74,456,
            1182,242,331,1647,20,17,21,18,482,829,
            560,44,503,484,521,1922,2989,1333,645,519,
            685,586,717,694,827,794,74,49,1182,169,
            92,181,254,213,19,1647,20,17,21,18,
            482,829,1268,44,503,484,521,255,213,284,
            1787,519,685,586,717,694,827,794,74,244,
            254,213,85,1647,20,17,21,18,482,829,
            249,44,503,484,521,571,128,2890,630,519,
            685,586,717,694,827,794,74,1002,330,783,
            84,1647,20,17,21,18,482,829,249,44,
            503,484,521,955,645,1414,783,519,685,586,
            717,694,827,794,74,3001,1065,783,83,1647,
            20,17,21,18,482,829,1330,44,503,484,
            521,1920,3010,940,1935,519,685,586,717,694,
            827,794,74,342,775,245,82,1647,20,17,
            21,18,482,829,249,44,503,484,521,645,
            194,1572,911,519,685,586,717,694,827,794,
            74,520,295,783,81,1647,20,17,21,18,
            482,829,1866,44,503,484,521,645,456,968,
            379,519,685,586,717,694,827,794,74,117,
            297,474,80,1647,20,17,21,18,482,829,
            249,44,503,484,521,751,456,2945,170,519,
            685,586,717,694,827,794,74,807,383,969,
            79,1647,20,17,21,18,482,829,180,44,
            503,484,521,1147,456,836,1308,519,685,586,
            717,694,827,794,74,758,334,1513,78,1647,
            20,17,21,18,482,829,712,44,503,484,
            521,1121,456,1201,1209,519,685,586,717,694,
            827,794,74,1346,1469,995,77,1647,20,17,
            21,18,482,829,204,44,503,484,521,998,
            1331,1248,1494,519,685,586,717,694,827,794,
            74,1528,905,67,76,1647,20,17,21,18,
            482,829,181,44,503,484,521,1050,1179,1473,
            811,519,685,586,717,694,827,794,74,1319,
            179,1768,75,1671,20,17,21,18,482,354,
            1182,368,315,316,317,1781,1534,1647,20,17,
            21,18,482,829,1309,44,503,484,521,456,
            1805,135,213,519,685,586,717,694,827,794,
            74,228,254,213,357,1671,20,17,21,18,
            482,353,138,134,136,160,1510,1647,20,17,
            21,18,482,42,1370,44,503,484,521,1709,
            1558,140,166,519,685,586,717,694,1183,205,
            144,147,150,153,560,467,1896,346,1582,1853,
            1602,1757,362,1647,20,17,21,18,482,829,
            1212,44,503,484,521,1259,1199,1913,417,519,
            685,586,717,694,827,794,74,1230,1097,887,
            73,1647,20,17,21,18,482,829,1606,44,
            503,484,521,3218,1125,1350,3218,519,685,586,
            717,694,827,794,74,3218,3218,3218,958,1647,
            20,17,21,18,482,829,3218,44,503,484,
            521,3218,3218,3218,3218,519,685,586,717,694,
            827,794,74,3218,937,3218,1044,1647,20,17,
            21,18,482,42,560,44,503,484,521,560,
            1857,560,560,519,685,586,717,694,827,794,
            93,1647,20,17,21,18,482,42,23,44,
            503,484,521,273,321,279,341,519,685,586,
            717,694,827,794,93,209,227,3218,1647,20,
            17,21,18,482,42,360,44,503,484,521,
            1870,570,1368,560,519,685,586,717,694,827,
            794,93,1647,20,17,21,18,482,42,1071,
            44,503,484,521,334,3218,3218,654,519,685,
            586,717,694,827,794,93,3218,3218,3218,1647,
            20,17,21,18,482,42,212,44,503,484,
            521,560,1125,1350,3218,519,685,586,717,694,
            827,794,93,1647,20,17,21,18,482,42,
            1099,44,503,484,521,280,3218,3218,1870,519,
            685,586,717,694,827,794,93,3218,3218,3218,
            1647,20,17,21,18,482,42,202,44,503,
            484,521,333,3218,3218,1111,519,685,586,717,
            694,827,794,93,335,199,1239,319,315,316,
            317,1127,388,419,20,17,21,18,482,42,
            666,36,1,1239,3218,3218,1598,1696,1875,388,
            86,110,3218,209,95,905,1650,3218,203,785,
            108,94,96,97,98,99,127,86,110,1224,
            1368,95,1923,1650,246,1247,785,108,94,96,
            97,98,99,1847,3218,560,989,319,315,316,
            317,109,105,2816,3218,367,106,3218,318,315,
            316,317,336,385,1838,3218,3218,338,109,2371,
            3218,366,367,107,2110,3218,319,315,316,317,
            385,1652,3218,318,315,316,317,3218,218,1269,
            221,1454,223,224,1349,3218,3218,2361,3218,855,
            1647,20,17,21,18,482,42,1370,44,503,
            484,969,1772,219,1269,221,1454,223,224,229,
            1240,265,1239,274,318,315,316,317,388,3218,
            345,155,1336,269,601,416,272,3218,133,1239,
            1714,249,666,990,3218,388,86,110,787,1832,
            95,3218,1650,2013,3218,785,108,94,96,97,
            98,99,3218,86,110,3218,87,95,127,1650,
            582,473,785,108,94,96,97,98,99,1299,
            3218,3218,989,3218,3218,3218,2211,109,314,2839,
            3218,367,106,3218,318,315,316,317,560,385,
            783,3218,3218,277,109,899,617,249,367,107,
            2110,3218,424,2839,787,560,385,1788,318,315,
            316,317,2387,3218,218,1269,221,1454,223,224,
            229,274,87,2361,2061,756,197,1695,1828,2428,
            666,267,601,416,272,2789,667,1856,218,1269,
            221,1454,223,224,229,3218,1469,1397,318,315,
            316,317,3218,989,3218,1890,195,155,1336,560,
            2839,3218,3218,560,1625,318,315,316,317,990,
            218,1269,221,1454,223,224,229,1182,249,263,
            274,2110,1832,225,193,787,2957,320,3218,2370,
            267,601,416,272,3218,218,1269,221,1454,223,
            224,229,198,87,2361,264,277,560,1848,254,
            213,1647,20,17,21,18,482,42,1074,44,
            503,484,971,3218,218,1269,221,1454,223,224,
            229,340,3218,1919,274,3218,827,560,156,1336,
            3218,3218,3218,2839,267,601,416,272,318,315,
            316,317,467,1880,261,3218,568,3218,3218,1469,
            3218,339,3218,3218,2061,1647,20,17,21,18,
            482,42,3218,44,503,484,1018,1057,218,1269,
            221,1454,223,224,229,1896,1401,1397,1647,20,
            17,21,18,482,42,3218,44,503,484,521,
            3218,617,3218,3218,519,685,586,1155,2839,325,
            560,3218,3218,319,315,316,317,3218,3218,1647,
            20,17,21,18,482,42,2957,44,503,484,
            521,3218,3218,3218,1113,519,685,1158,3218,3218,
            3218,1037,199,218,1269,221,1454,223,224,229,
            989,3218,1397,318,315,316,317,2839,560,3218,
            3218,3218,319,315,316,317,3218,3218,3218,855,
            1647,20,17,21,18,482,42,3218,44,503,
            484,1027,230,219,1269,221,1454,223,224,1387,
            1240,2978,218,1269,221,1454,223,224,229,1037,
            3218,2947,1470,20,17,21,18,482,42,1934,
            43,318,315,316,317,1647,20,17,21,18,
            482,42,1334,44,503,484,521,855,560,560,
            3218,519,1111,234,368,315,316,317,560,3218,
            3218,219,1269,221,1454,223,224,229,1240,1021,
            3218,877,2469,351,135,213,424,1504,424,28,
            3218,1186,2489,318,315,316,317,593,1239,319,
            315,316,317,560,787,142,134,136,160,855,
            1888,3218,1888,419,20,17,21,18,482,42,
            3218,36,86,110,141,166,95,352,3218,3218,
            1195,785,1267,94,96,97,98,99,641,1239,
            3218,3218,2554,3218,3218,787,3218,3218,260,3218,
            259,3218,3218,3218,247,1471,748,1241,689,1239,
            3218,3218,3218,86,110,787,3218,95,368,315,
            316,317,785,103,94,96,97,98,99,803,
            1239,3218,3218,86,110,3218,787,95,135,213,
            3218,3218,785,101,94,96,97,98,99,851,
            1239,3218,3218,3218,86,110,787,3218,95,145,
            134,136,160,785,359,94,96,97,98,99,
            3218,3218,3218,3218,86,110,3218,3218,95,3218,
            3218,1881,3218,785,102,94,96,97,98,99,
            1087,965,1239,318,315,316,317,424,787,3218,
            3218,3218,318,315,316,317,3218,1013,1239,2736,
            3218,3218,3218,3218,787,3218,86,110,855,3218,
            95,1888,3218,3218,3218,785,119,94,96,97,
            98,99,86,110,3218,3218,95,3218,3218,1195,
            3218,785,114,94,96,97,98,99,1061,1239,
            3218,1721,3218,3218,3218,787,3218,3218,3218,259,
            3218,3218,3218,3218,1471,3218,1241,3218,1175,1239,
            3218,3218,3218,86,110,787,3218,95,3218,3218,
            3218,3218,785,1385,94,96,97,98,99,1223,
            1239,3218,249,86,110,3218,787,95,3218,787,
            3218,3218,785,113,94,96,97,98,99,1271,
            1239,3218,1879,3218,86,110,787,87,95,787,
            3218,3218,1865,785,121,94,96,97,98,99,
            3218,3218,249,3218,86,110,3218,87,95,787,
            3218,3218,115,785,120,94,96,97,98,99,
            1647,20,17,21,18,482,42,87,44,503,
            484,521,2070,3218,3218,3218,1130,1647,20,17,
            21,18,482,42,713,44,503,484,521,1029,
            3218,3218,3218,1141,3218,3218,318,315,316,317,
            1647,20,17,21,18,482,42,910,44,503,
            484,1056,855,3218,3218,3218,3218,3218,3218,368,
            315,316,317,1647,20,17,21,18,482,42,
            3218,44,957,1240,3218,3218,274,3218,1120,135,
            213,3218,1767,3218,3218,3218,269,601,416,272,
            368,315,316,317,368,315,316,317,3218,313,
            148,134,136,160,3218,3218,2839,1778,3218,3218,
            135,213,3218,3218,135,213,3218,3218,3218,368,
            315,316,317,1671,20,17,21,18,482,41,
            3218,151,134,136,160,154,134,136,160,135,
            213,218,1269,221,1454,223,224,229,3218,3218,
            1919,1647,20,17,21,18,482,42,3218,39,
            363,134,136,160,1647,20,17,21,18,482,
            42,3218,38,1647,20,17,21,18,482,42,
            3218,37,1647,20,17,21,18,482,42,3218,
            36,1647,20,17,21,18,482,42,500,35,
            3218,723,3218,3218,3218,388,1893,3218,2785,1647,
            20,17,21,18,482,42,3218,47,319,315,
            316,317,3218,87,3218,3218,3218,395,950,197,
            1647,20,17,21,18,482,42,3218,46,1647,
            20,17,21,18,482,42,3218,45,3218,3218,
            500,3218,3218,274,3218,551,3218,388,2731,551,
            3218,3218,3218,267,601,416,272,318,315,316,
            317,318,315,316,317,87,3218,1364,266,395,
            950,197,423,855,3218,3218,551,855,3218,388,
            1671,20,17,21,18,482,34,3218,318,315,
            316,317,3218,3218,1195,3218,3218,87,1195,551,
            2731,3218,115,1792,855,3218,2554,3218,410,3218,
            1721,318,315,316,317,3218,3218,3218,3218,1523,
            318,315,316,317,3218,1195,3218,855,1671,20,
            17,21,18,482,33,3218,1685,2101,2492,930,
            508,3218,367,3218,3218,3218,3218,3218,1195,3218,
            737,3218,318,315,316,317,3218,424,3218,3218,
            2159,1695,20,17,21,18,482,1197,1685,1695,
            20,17,21,18,482,364,1249,3218,3218,3218,
            1321,197,3218,3218,3218,1249,3218,3218,318,315,
            316,317,318,315,316,317,631,318,315,316,
            317,3218,1295,3218,855,1109,3218,1911,2217,424,
            1890,858,424,855,3218,3218,360,1949,424,318,
            315,316,317,787,3218,1066,3218,3218,671,318,
            315,316,317,1888,1122,3009,197,666,1951,192,
            3218,87,1888,3218,787,3030,1169,3218,3218,1879,
            318,315,316,317,1128,1855,787,3218,3218,3218,
            3218,1879,87,125,3218,1890,3039,802,787,1932,
            1879,259,3218,3218,87,3218,2118,787,1241,115,
            259,319,315,316,317,1571,87,1241,3218,3218,
            1960,115,3218,3218,192,87,3218,3218,3218,1965,
            115,1296,319,315,316,317,3218,3218,3218,1212,
            1855,319,315,316,317,3218,1046,3218,3218,3218,
            3218,3218,3218,3218,3218,3218,3218,2169,2188,3218,
            3218,3218,3218,3218,1167,3218,3218,2198,3218,0,
            495,32,0,1791,32,0,3226,1,0,841,
            129,0,856,129,0,902,129,0,841,130,
            0,856,130,0,902,130,0,841,131,0,
            856,131,0,902,131,0,841,185,0,856,
            185,0,902,185,0,185,189,0,841,184,
            0,856,184,0,902,184,0,184,189,0,
            841,132,0,856,132,0,902,132,0,841,
            133,0,856,133,0,902,133,0,20,179,
            0,841,366,0,856,366,0,902,366,0,
            1,702,0,841,378,0,856,378,0,902,
            378,0,1,841,0,1,856,0,1,902,
            0,354,364,0,841,253,0,856,253,0,
            902,253,0,8,10,0,1310,118,0,1,
            3444,0,1,3455,0,112,2448,0
        };
    };
    public final static char baseAction[] = BaseAction.baseAction;
    @Override
    public final int baseAction(int index) { return baseAction[index]; }
    public final static char lhs[] = baseAction;
    @Override
    public final int lhs(int index) { return lhs[index]; };

    public interface TermCheck {
        public final static byte termCheck[] = {0,
            0,1,2,3,4,5,6,7,8,9,
            10,11,12,13,14,15,16,17,18,19,
            20,21,22,23,24,25,26,27,28,29,
            30,31,32,33,34,35,0,0,38,39,
            40,41,42,43,44,45,46,47,0,12,
            50,51,52,53,54,55,56,57,58,59,
            60,61,62,63,64,65,0,1,2,3,
            4,5,6,7,8,9,10,11,12,13,
            14,15,16,17,18,19,20,21,22,23,
            24,25,26,27,28,29,30,31,32,33,
            34,35,66,67,38,39,40,41,42,43,
            44,45,46,47,66,67,50,51,52,53,
            54,55,56,57,58,59,60,61,62,63,
            64,65,0,1,2,3,4,5,6,7,
            8,9,10,11,12,13,14,15,16,17,
            18,19,20,21,22,23,24,25,26,27,
            28,29,30,31,32,33,34,35,0,0,
            38,39,40,41,42,43,44,45,46,47,
            0,12,50,51,52,53,54,55,56,57,
            58,59,60,61,62,63,64,65,0,1,
            2,3,4,5,6,7,8,9,10,11,
            12,13,14,15,16,17,18,19,20,21,
            22,23,24,25,26,27,28,29,30,31,
            32,33,34,35,66,67,38,39,40,41,
            42,43,44,45,46,47,66,67,0,51,
            52,53,54,55,56,57,58,59,60,61,
            62,63,64,65,0,1,2,3,4,5,
            6,7,8,9,10,11,12,13,14,15,
            16,17,18,19,20,21,22,23,24,25,
            26,27,28,29,30,31,32,33,34,35,
            0,0,38,39,40,41,42,43,44,45,
            46,47,0,1,2,51,52,53,54,55,
            56,57,58,59,60,61,62,63,64,65,
            0,1,2,0,4,5,6,7,8,9,
            10,11,12,13,11,15,16,17,18,19,
            20,21,22,23,24,25,26,0,28,0,
            30,31,32,33,34,0,1,2,0,4,
            2,6,7,8,73,74,75,76,0,78,
            79,51,52,53,54,55,56,57,58,59,
            60,61,62,63,64,65,0,0,2,3,
            3,36,6,0,36,9,10,48,12,0,
            1,15,16,4,5,0,7,8,0,1,
            2,3,0,5,6,3,4,9,10,11,
            12,13,36,15,16,17,18,19,20,21,
            22,23,0,0,0,49,50,50,0,27,
            0,73,74,75,76,0,78,79,3,9,
            10,0,66,67,3,69,70,71,72,73,
            74,75,76,0,78,79,80,81,82,83,
            84,85,86,87,88,89,90,91,92,93,
            94,95,96,97,0,77,2,3,37,0,
            6,86,87,9,10,50,12,0,1,15,
            16,4,5,14,7,8,0,1,2,0,
            0,5,6,80,81,9,10,11,12,13,
            36,15,16,17,18,19,20,21,22,23,
            0,99,0,49,50,29,73,74,75,76,
            0,78,79,0,4,2,36,7,8,0,
            66,67,3,69,70,71,72,73,74,75,
            76,0,78,79,80,81,82,83,84,85,
            86,87,88,89,90,91,92,93,94,95,
            96,97,0,1,2,3,37,5,6,80,
            81,9,10,11,12,13,14,15,16,17,
            18,19,20,21,22,23,0,1,2,27,
            4,29,82,7,8,83,0,35,0,0,
            38,39,40,41,42,43,44,45,46,47,
            0,1,2,3,0,5,6,3,0,9,
            10,11,12,13,14,15,16,17,18,19,
            20,21,22,23,48,0,0,27,3,29,
            4,0,1,7,8,35,5,49,38,39,
            40,41,42,43,44,45,46,47,0,1,
            2,3,27,5,6,66,67,9,10,11,
            12,13,14,15,16,17,18,19,20,21,
            22,23,0,0,2,27,4,29,6,7,
            8,77,0,35,2,3,38,39,40,41,
            42,43,44,45,46,47,0,1,0,3,
            4,5,4,7,8,7,8,0,36,13,
            0,4,0,1,7,8,0,0,36,37,
            24,25,26,6,28,29,30,31,32,33,
            34,24,25,26,0,28,24,30,31,32,
            33,34,0,9,10,3,50,51,52,53,
            54,55,56,57,58,59,60,61,62,63,
            64,65,0,1,2,3,0,5,6,27,
            0,9,10,11,12,13,14,15,16,17,
            18,19,20,21,22,23,0,1,2,27,
            4,29,82,7,8,0,0,35,0,3,
            38,39,40,41,42,43,44,45,46,47,
            0,1,2,3,48,5,6,0,48,9,
            10,11,12,13,14,15,16,17,18,19,
            20,21,22,23,48,0,0,27,68,29,
            4,6,6,7,8,35,50,0,38,39,
            40,41,42,43,44,45,46,47,0,1,
            0,3,4,5,0,7,8,0,1,0,
            0,13,5,4,14,11,7,8,83,9,
            10,14,24,25,26,68,28,29,30,31,
            32,33,34,24,25,26,0,28,2,30,
            31,32,33,34,68,0,71,72,50,51,
            52,53,54,55,56,57,58,59,60,61,
            62,63,64,65,0,1,2,3,0,5,
            6,84,36,9,10,11,12,13,14,15,
            16,17,18,19,20,21,22,23,0,1,
            2,27,4,29,0,7,8,0,0,35,
            2,0,38,39,40,41,42,43,44,45,
            46,47,0,1,2,3,48,5,6,0,
            0,9,10,11,12,13,14,15,16,17,
            18,19,20,21,22,23,0,1,2,27,
            4,29,48,7,8,48,0,35,2,0,
            38,39,40,41,42,43,44,45,46,47,
            0,1,2,3,0,5,6,66,67,9,
            10,11,12,13,14,15,16,17,18,19,
            20,21,22,23,35,0,0,27,68,29,
            4,6,6,7,8,35,0,1,38,39,
            40,41,42,43,44,45,46,47,0,1,
            0,3,4,5,4,7,8,7,8,0,
            0,13,2,4,0,1,7,8,0,5,
            66,67,24,25,26,0,28,29,30,31,
            32,33,34,24,25,26,0,28,0,30,
            31,32,33,34,68,0,71,72,50,51,
            52,53,54,55,56,57,58,59,60,61,
            62,63,64,65,0,1,2,3,0,5,
            6,0,0,9,10,11,12,13,14,15,
            16,17,18,19,20,21,22,23,0,1,
            0,27,2,29,6,24,25,26,0,35,
            2,0,38,39,40,41,42,43,44,45,
            46,47,0,1,2,3,48,5,6,0,
            84,9,10,11,12,13,14,15,16,17,
            18,19,20,21,22,23,0,0,0,27,
            4,29,4,7,8,7,8,35,0,48,
            38,39,40,41,42,43,44,45,46,47,
            0,1,2,3,0,5,6,48,0,9,
            10,11,12,13,14,15,16,17,18,19,
            20,21,22,23,0,1,49,27,0,29,
            2,3,24,25,26,35,0,0,38,39,
            40,41,42,43,44,45,46,47,0,1,
            0,14,4,5,4,7,8,7,8,0,
            0,13,0,0,36,37,6,4,6,0,
            7,8,24,25,26,0,28,2,30,31,
            32,33,34,24,25,26,98,24,25,26,
            0,28,68,30,31,32,33,34,0,51,
            52,53,54,55,56,57,58,59,60,61,
            62,63,64,65,51,52,53,54,55,56,
            57,58,59,60,61,62,0,1,2,3,
            0,5,6,71,72,9,10,11,12,13,
            0,15,16,17,18,19,20,21,22,23,
            0,1,2,3,28,5,6,0,0,9,
            10,11,12,13,0,15,16,17,18,19,
            20,21,22,23,0,1,2,3,28,5,
            6,0,25,9,10,11,12,13,14,15,
            16,17,18,19,20,21,22,23,0,0,
            1,2,0,77,5,6,0,49,9,10,
            11,12,13,14,15,16,17,18,19,20,
            21,22,23,0,50,2,0,77,0,1,
            2,3,4,0,6,7,8,4,36,0,
            7,8,0,1,2,3,4,49,6,7,
            8,0,24,25,26,27,28,0,30,31,
            32,33,34,0,36,37,24,25,26,27,
            28,14,30,31,32,33,34,14,36,37,
            0,1,2,0,1,5,6,0,5,9,
            10,11,12,13,14,15,16,17,18,19,
            20,21,22,23,0,1,2,0,69,5,
            6,0,0,9,10,11,12,13,14,15,
            16,17,18,19,20,21,22,23,0,1,
            2,0,0,5,6,0,1,9,10,11,
            12,13,14,15,16,17,18,19,20,21,
            22,23,0,1,2,48,69,5,6,0,
            49,9,10,11,12,13,14,15,16,17,
            18,19,20,21,22,23,0,1,2,0,
            49,5,6,0,0,9,10,11,12,13,
            0,15,16,17,18,19,20,21,22,23,
            0,1,2,0,14,5,6,48,0,9,
            10,11,12,13,0,15,16,17,18,19,
            20,21,22,23,0,1,2,0,14,5,
            6,0,0,9,10,11,12,13,0,15,
            16,17,18,19,20,21,22,23,0,1,
            2,0,14,5,6,0,0,9,10,11,
            12,13,11,15,16,17,18,19,20,21,
            22,23,0,1,2,0,0,5,6,3,
            0,9,10,11,12,13,0,15,16,17,
            18,19,20,21,22,23,0,0,0,2,
            4,0,1,7,8,4,5,0,7,8,
            0,4,2,37,7,8,0,0,0,3,
            24,25,26,0,28,69,30,31,32,33,
            34,24,25,26,0,28,2,30,31,32,
            33,34,0,27,88,89,90,91,92,93,
            94,95,96,97,0,69,2,0,1,2,
            3,0,1,2,3,49,0,0,1,15,
            16,4,5,0,7,8,0,1,0,3,
            0,1,0,0,2,5,0,11,2,3,
            36,0,1,36,37,0,5,36,37,0,
            1,0,3,0,0,14,49,3,0,0,
            0,3,3,37,4,0,36,7,8,24,
            25,26,0,37,70,0,4,0,3,7,
            8,0,0,0,0,27,37,36,0,85,
            0,37,0,0,4,37,37,7,8,0,
            70,0,3,49,0,0,14,48,24,25,
            26,0,37,0,0,4,3,3,7,8,
            0,70,0,0,49,24,25,26,0,0,
            0,0,4,0,4,7,8,7,8,0,
            0,27,0,4,0,14,7,8,4,0,
            37,7,8,0,14,0,0,0,0,0,
            0,0,49,49,0,0,0,68,0,0,
            0,0,0,0,0,0,77,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0
        };
    };
    public final static byte termCheck[] = TermCheck.termCheck;
    @Override
    public final int termCheck(int index) { return termCheck[index]; }

    public interface TermAction {
        public final static char termAction[] = {0,
            3218,5235,1,1253,3170,5183,1,1,1,1,
            1,1,1,1,459,1,1,1,1,1,
            1,1,1,1,1,1,1,3227,1,3318,
            1,1,1,1,1,1213,54,64,745,843,
            773,1225,2227,1211,800,1223,2977,1214,356,2175,
            3225,1,1,1,1,1,1,1,1,1,
            1,1,1,1,1,1,8,3203,3203,3203,
            3203,3203,3203,3203,3203,3203,3203,3203,3203,3203,
            3203,3203,3203,3203,3203,3203,3203,3203,3203,3203,
            3203,3203,3203,3203,3203,3203,3203,3203,3203,3203,
            3203,3203,445,720,3203,3203,3203,3203,3203,3203,
            3203,3203,3203,3203,445,720,3203,3203,3203,3203,
            3203,3203,3203,3203,3203,3203,3203,3203,3203,3203,
            3203,3203,3218,5235,1,1253,3170,5183,1,1,
            1,1,1,1,1,1,459,1,1,1,
            1,1,1,1,1,1,1,1,1,3227,
            1,3318,1,1,1,1,1,1213,355,65,
            745,843,773,1225,2227,1211,800,1223,2977,1214,
            58,2175,3225,1,1,1,1,1,1,1,
            1,1,1,1,1,1,1,1,3218,5235,
            1,3228,3170,5183,1,1,1,1,1,1,
            1,1,459,1,1,1,1,1,1,1,
            1,1,1,1,1,3227,1,3318,1,1,
            1,1,1,1213,445,720,745,843,773,1225,
            2227,1211,800,1223,2977,1214,445,720,1,1,
            1,1,1,1,1,1,1,1,1,1,
            1,1,1,1,3218,5235,1,3228,3170,5183,
            1,1,1,1,1,1,1,1,459,1,
            1,1,1,1,1,1,1,1,1,1,
            1,3227,1,3318,1,1,1,1,1,1213,
            286,59,745,843,773,1225,2227,1211,800,1223,
            2977,1214,1,3444,2629,1,1,1,1,1,
            1,1,1,1,1,1,1,1,1,1,
            3218,3229,433,3218,902,3230,2712,841,856,2703,
            2694,3234,2721,2901,1472,2868,2820,2653,3231,3232,
            3233,2681,639,1325,3432,3434,3433,3218,3381,1,
            3382,3380,3435,3383,3379,268,3444,1942,270,902,
            649,253,841,856,2570,2130,2025,1971,61,1750,
            875,3386,3391,3390,3388,3389,3387,3392,3393,3385,
            3394,3395,3396,1762,2880,2848,1,1,3230,3230,
            3086,731,3230,3218,731,3230,3230,2,3230,185,
            3125,3230,3230,3122,3125,72,3116,3119,3218,3229,
            433,3222,1,3230,2712,116,3170,2703,2694,3234,
            2721,1283,3230,2868,2820,2653,3231,3232,3233,2681,
            639,1325,3218,62,3218,3230,3230,3225,3218,116,
            51,2570,2130,2025,1971,3218,1750,875,3226,2593,
            426,1,3230,3230,90,3230,3230,3230,3230,3230,
            3230,3230,3230,60,3230,3230,3230,3230,3230,3230,
            3230,3230,3230,3230,3230,3230,3230,3230,3230,3230,
            3230,3230,3230,3230,1,3221,3229,3229,90,1,
            3229,1337,2956,3229,3229,3225,3229,184,3137,3229,
            3229,3134,3137,459,3128,3131,3218,1,1,63,
            271,1,1,2547,2530,1,1,1,1,1,
            3229,1,1,1,1,1,1,1,1,1,
            66,3079,68,3229,3229,3605,2570,2130,2025,1971,
            253,1750,875,3218,902,1470,731,841,856,3218,
            3229,3229,3224,3229,3229,3229,3229,3229,3229,3229,
            3229,3218,3229,3229,3229,3229,3229,3229,3229,3229,
            3229,3229,3229,3229,3229,3229,3229,3229,3229,3229,
            3229,3229,3218,5235,1,3228,3223,5183,1,2547,
            2530,1,1,1,1,1,459,1,1,1,
            1,1,1,1,1,1,1,3444,2629,3227,
            3188,3318,2079,3182,3185,2048,3218,1213,88,57,
            745,843,773,1225,2227,1211,800,1223,2977,1214,
            3218,5235,1,3228,3218,5183,1,3222,3218,1,
            1,1,1,1,459,1,1,1,1,1,
            1,1,1,1,1559,1,182,3227,3228,3318,
            902,3218,3229,841,856,1213,3230,943,745,843,
            773,1225,2227,1211,800,1223,2977,1214,3218,5235,
            1,3228,3227,5183,1,445,720,1,1,1,
            1,1,459,1,1,1,1,1,1,1,
            1,1,268,3218,1829,3227,902,3318,253,841,
            856,3221,1,1213,1829,265,745,843,773,1225,
            2227,1211,800,1223,2977,1214,3218,1,378,191,
            1,1,3179,1,1,3173,3176,130,731,1,
            67,3104,326,3545,3098,3101,3218,3218,731,265,
            1,1,1,2916,1,3414,1,1,1,1,
            1,3432,3434,3433,53,3381,3546,3382,3380,3435,
            3383,3379,3218,2593,426,3228,191,1,1,1,
            1,1,1,1,1,1,1,1,1,1,
            1,1,3218,5235,1,3228,3218,5183,1,3227,
            3218,1,1,1,1,1,459,1,1,1,
            1,1,1,1,1,1,1,3444,2629,3227,
            3188,3318,2079,3182,3185,69,285,1213,3218,494,
            745,843,773,1225,2227,1211,800,1223,2977,1214,
            3218,5235,1,3228,1297,5183,1,1,2329,1,
            1,1,1,1,459,1,1,1,1,1,
            1,1,1,1,1559,48,1,3227,1457,3318,
            3188,2769,253,3182,3185,1213,494,70,745,843,
            773,1225,2227,1211,800,1223,2977,1214,3218,1,
            3218,190,1,1,349,1,1,3218,3229,131,
            52,1,3230,3113,4442,1369,3107,3110,2048,2593,
            426,1010,1,1,1,3476,1,3414,1,1,
            1,1,1,3432,3434,3433,222,3381,850,3382,
            3380,3435,3383,3379,3476,3218,2760,2739,190,1,
            1,1,1,1,1,1,1,1,1,1,
            1,1,1,1,3218,5235,1,3228,3218,5183,
            1,617,731,1,1,1,1,1,459,1,
            1,1,1,1,1,1,1,1,1,3444,
            2629,3227,3188,3318,3218,3182,3185,3218,3218,1213,
            1520,56,745,843,773,1225,2227,1211,800,1223,
            2977,1214,3218,5235,1,3228,1373,5183,1,3218,
            1,1,1,1,1,1,459,1,1,1,
            1,1,1,1,1,1,253,3444,2629,3227,
            902,3318,2268,841,856,2288,3218,1213,1196,118,
            745,843,773,1225,2227,1211,800,1223,2977,1214,
            3218,5235,1,3228,55,5183,1,445,720,1,
            1,1,1,1,459,1,1,1,1,1,
            1,1,1,1,3206,50,1,3227,3475,3318,
            3188,2769,253,3182,3185,1213,3218,2233,745,843,
            773,1225,2227,1211,800,1223,2977,1214,3218,1,
            376,191,1,1,902,1,1,841,856,132,
            3218,1,2812,3146,208,3229,3140,3143,3218,3230,
            445,720,1,1,1,3218,1,3414,1,1,
            1,1,1,3432,3434,3433,71,3381,3218,3382,
            3380,3435,3383,3379,3476,3218,2760,2739,191,1,
            1,1,1,1,1,1,1,1,1,1,
            1,1,1,1,3218,5235,1,3228,3218,5183,
            1,3218,3218,1,1,1,1,1,459,1,
            1,1,1,1,1,1,1,1,3218,2189,
            3218,3227,1857,3318,1398,3432,3434,3433,3218,1213,
            1938,3218,745,843,773,1225,2227,1211,800,1223,
            2977,1214,3218,5235,1,3228,2309,5183,1,201,
            617,1,1,1,1,1,459,1,1,1,
            1,1,1,1,1,1,379,256,253,3227,
            902,3318,3200,841,856,3194,3197,1213,112,3600,
            745,843,773,1225,2227,1211,800,1223,2977,1214,
            3218,5235,1,3228,3218,5183,1,1610,248,1,
            1,1,1,1,459,1,1,1,1,1,
            1,1,1,1,1,3212,2209,3227,1,3318,
            1829,3224,3432,3434,3433,1213,3218,3218,745,843,
            773,1225,2227,1211,800,1223,2977,1214,3218,3229,
            183,922,902,3230,902,841,856,841,856,249,
            3218,2909,49,129,731,3223,2925,3095,2769,3218,
            3089,3092,3432,3434,3433,3218,3381,2472,3382,3380,
            3435,3383,3379,1,1,1,3215,3432,3434,3433,
            3218,3381,3476,3382,3380,3435,3383,3379,3218,3386,
            3391,3390,3388,3389,3387,3392,3393,3385,3394,3395,
            3396,1762,2880,2848,3386,3391,3390,3388,3389,3387,
            3392,3393,3385,3394,3395,3396,1,3229,433,3222,
            3218,3230,1643,2760,2739,2703,2694,3234,2721,1283,
            3218,2868,2820,2653,3231,3232,3233,2681,639,1325,
            3218,3229,433,3222,815,3230,2243,344,30,2703,
            2694,3234,2721,1283,3218,2868,2820,2653,3231,3232,
            3233,2681,639,1325,1,4100,433,29,1429,4002,
            2712,3218,3561,2703,2694,3234,2721,1283,4442,2868,
            2820,2653,3231,3232,3233,2681,639,1325,30,3218,
            3229,433,220,3221,3230,2712,3218,556,2703,2694,
            3234,2721,1283,4442,2868,2820,2653,3231,3232,3233,
            2681,639,1325,337,29,1693,3218,3221,20,179,
            3158,3158,179,377,3158,179,179,902,731,157,
            841,856,354,364,364,3191,364,3247,3191,364,
            364,3218,179,179,179,3158,179,3218,179,179,
            179,179,179,3218,3158,3158,364,364,364,3191,
            364,1094,364,364,364,364,364,1150,364,3191,
            1,4100,433,207,683,4002,2712,211,683,2703,
            2694,3234,2721,1283,4442,2868,2820,2653,3231,3232,
            3233,2681,639,1325,3218,3229,433,1,589,3230,
            2712,207,3218,2703,2694,3234,2721,1283,4442,2868,
            2820,2653,3231,3232,3233,2681,639,1325,380,3229,
            433,347,3218,3230,2712,3218,3456,2703,2694,3234,
            2721,1283,4442,2868,2820,2653,3231,3232,3233,2681,
            639,1325,3218,3229,433,3230,1508,3230,2712,1,
            5159,2703,2694,3234,2721,1283,4442,2868,2820,2653,
            3231,3232,3233,2681,639,1325,3218,3229,433,3218,
            766,3230,2712,3218,3218,2703,2694,3234,2721,1283,
            365,2868,2820,2653,3231,3232,3233,2681,639,1325,
            3218,3229,2728,3218,4442,3230,2712,3229,3218,2703,
            2694,3234,2721,1283,3218,2868,2820,2653,3231,3232,
            3233,2681,639,1325,3218,3229,2780,3218,651,3230,
            2712,3218,3218,2703,2694,3234,2721,1283,229,2868,
            2820,2653,3231,3232,3233,2681,639,1325,1,3229,
            433,3218,232,3230,2712,3218,42,2703,2694,3234,
            2721,1283,1369,2868,2820,2653,3231,3232,3233,2681,
            639,1325,332,3229,433,3218,1,3230,2712,3224,
            3218,2703,2694,3234,2721,1283,3218,2868,2820,2653,
            3231,3232,3233,2681,639,1325,133,3218,3218,1665,
            3155,206,5557,3149,3152,902,5557,366,841,856,
            324,3167,759,3223,3161,3164,3218,3218,3218,3228,
            3432,3434,3433,3218,3381,1255,3382,3380,3435,3383,
            3379,3432,3434,3433,3218,3381,2512,3382,3380,3435,
            3383,3379,3218,3227,1227,1199,1171,1143,1115,1059,
            1087,1031,1003,975,32,687,3080,1,3444,1942,
            262,1,3209,1942,3224,1913,3218,375,5566,3244,
            3245,902,5566,3218,841,856,3218,1997,3218,3224,
            3218,3229,350,3218,1386,3230,3218,1967,518,3224,
            3083,3218,3229,731,262,250,3230,731,3223,3218,
            1242,292,3224,3218,3218,1038,262,3224,1,3218,
            159,116,3224,3223,902,3218,1481,841,856,1,
            1,1,370,3223,580,3218,902,3218,3224,841,
            856,3218,3218,3218,251,116,3223,1532,3218,422,
            369,3223,229,3218,902,116,3223,841,856,3218,
            812,252,3222,588,3218,3218,233,1252,3432,3434,
            3433,371,3223,3218,3218,902,3224,3228,841,856,
            3218,911,3218,3218,915,3432,3434,3433,200,3218,
            372,189,902,3218,902,841,856,841,856,373,
            379,3227,3218,902,374,206,841,856,902,3218,
            3223,841,856,3218,375,3218,3218,3218,3218,3218,
            3218,3218,1408,1996,3218,3218,3218,1583,3218,3218,
            3218,3218,3218,3218,3218,3218,3221
        };
    };
    public final static char termAction[] = TermAction.termAction;
    @Override
    public final int termAction(int index) { return termAction[index]; }

    public interface Asb {
        public final static char asb[] = {0,
            123,1,31,54,31,31,31,31,31,31,
            31,31,31,31,31,62,3,289,286,293,
            291,301,299,303,302,305,304,275,31,3,
            430,430,254,31,272,272,272,114,387,371,
            31,31,31,31,31,31,31,31,31,31,
            31,31,31,31,31,31,31,31,618,31,
            31,31,31,31,31,31,31,31,31,31,
            31,31,272,272,250,153,118,228,473,174,
            173,517,549,549,549,529,510,529,510,510,
            529,510,529,67,529,402,31,372,286,286,
            291,291,291,291,291,291,289,289,299,293,
            293,302,301,200,200,304,303,171,351,171,
            114,121,109,28,250,506,232,272,551,476,
            365,271,616,169,510,430,427,430,169,430,
            510,31,71,3,371,597,317,317,430,549,
            549,584,549,549,317,200,31,200,225,542,
            31,31,351,151,121,109,506,250,231,228,
            272,112,402,452,478,143,271,364,272,440,
            320,171,354,272,369,317,317,385,31,370,
            31,31,584,200,433,584,549,544,151,109,
            109,31,31,250,232,473,457,456,118,478,
            272,452,451,270,171,440,320,354,354,179,
            597,317,542,272,549,272,272,584,31,584,
            468,171,316,460,544,544,463,118,436,356,
            220,109,506,250,250,272,551,476,112,143,
            272,253,272,272,320,351,541,320,354,356,
            445,356,317,597,544,584,31,584,584,58,
            450,57,371,544,460,460,118,153,544,351,
            149,466,202,430,31,200,50,506,109,478,
            452,320,194,356,351,31,430,254,317,272,
            370,468,317,47,616,372,460,544,436,62,
            153,360,430,31,109,272,452,253,351,316,
            31,312,194,313,351,272,254,317,584,431,
            272,371,31,250,431,194,31,313,313,584,
            272,272,250,313,584
        };
    };
    public final static char asb[] = Asb.asb;
    @Override
    public final int asb(int index) { return asb[index]; }

    public interface Asr {
        public final static byte asr[] = {0,
            99,0,30,51,52,63,31,53,32,54,
            55,33,56,57,28,64,34,65,58,59,
            60,61,62,7,8,4,14,24,26,25,
            2,18,19,20,11,5,15,16,12,9,
            10,21,22,17,23,13,1,6,0,69,
            36,70,0,77,27,99,49,37,3,48,
            0,48,68,77,50,99,70,85,15,16,
            33,28,34,32,31,30,12,9,10,71,
            72,66,67,73,74,75,76,80,81,82,
            83,84,86,87,69,88,89,90,91,92,
            93,94,95,96,97,78,79,27,24,26,
            25,49,1,3,37,2,36,4,8,7,
            6,0,17,18,19,20,11,1,5,2,
            15,16,12,6,9,10,21,22,13,23,
            29,0,3,49,37,1,24,0,3,50,
            36,70,15,16,12,6,9,10,21,22,
            17,23,13,2,18,19,20,11,1,5,
            14,0,2,3,49,37,36,0,30,24,
            31,32,33,26,28,34,25,3,36,49,
            37,27,14,6,1,2,4,8,7,48,
            0,69,15,16,12,6,9,10,21,22,
            17,23,13,2,18,19,20,11,14,1,
            5,36,70,0,2,25,0,24,26,25,
            28,15,16,12,6,9,10,21,22,17,
            23,13,2,1,5,18,19,20,11,77,
            3,0,49,17,18,19,20,5,2,15,
            16,12,6,9,10,21,22,13,23,11,
            1,37,3,0,69,88,89,90,91,92,
            94,93,95,96,97,6,71,72,9,10,
            67,66,73,74,75,76,78,79,80,81,
            12,82,83,84,68,77,37,50,99,86,
            87,48,4,8,7,49,27,3,0,30,
            51,24,52,63,31,53,32,54,55,33,
            26,56,57,28,64,34,65,58,59,25,
            60,61,62,1,5,13,7,8,4,29,
            3,50,0,1,5,3,50,49,0,77,
            3,68,0,1,37,3,2,0,37,98,
            50,39,41,14,45,47,42,35,43,44,
            40,38,46,29,3,27,2,18,19,20,
            11,15,16,12,6,9,10,21,22,17,
            23,13,63,64,65,59,51,56,54,55,
            53,52,57,58,60,61,62,34,31,28,
            30,33,24,26,25,32,4,8,7,5,
            1,0,48,68,0,3,69,49,27,14,
            4,8,7,0,3,49,50,69,0,48,
            2,3,37,49,0,2,48,37,36,4,
            8,7,3,49,27,69,0,3,48,37,
            11,0,6,2,36,37,3,30,51,52,
            63,31,53,32,54,55,33,56,57,28,
            64,34,65,58,59,60,61,62,1,5,
            13,7,8,4,68,24,26,25,0,1,
            5,14,4,8,7,0,59,51,56,54,
            55,53,52,57,58,60,61,62,36,49,
            37,34,31,28,30,33,24,26,25,32,
            48,27,3,6,1,7,8,4,2,0,
            6,30,51,24,52,63,31,53,32,54,
            55,33,26,56,57,28,64,34,65,58,
            59,25,60,61,62,1,5,13,68,4,
            8,7,0,39,41,14,45,47,42,35,
            43,44,40,38,46,29,17,18,19,20,
            1,5,2,15,16,12,6,9,10,21,
            22,13,23,27,3,11,0,17,18,19,
            20,11,1,5,2,15,16,12,6,9,
            10,21,22,13,23,48,0
        };
    };
    public final static byte asr[] = Asr.asr;
    @Override
    public final int asr(int index) { return asr[index]; }

    public interface Nasb {
        public final static char nasb[] = {0,
            40,27,51,27,51,51,51,51,51,51,
            51,51,51,51,51,27,28,27,27,27,
            27,27,27,27,27,27,27,27,51,28,
            17,17,43,30,87,87,87,117,1,35,
            51,51,51,51,51,51,51,51,51,51,
            51,51,51,51,51,51,51,51,173,51,
            51,51,51,51,51,51,51,51,51,51,
            51,51,87,87,64,142,148,62,116,13,
            13,78,27,27,27,79,114,79,114,114,
            79,114,79,27,79,72,51,89,27,27,
            27,27,27,27,27,27,27,27,27,27,
            27,27,27,27,27,27,27,143,135,27,
            156,27,140,66,64,81,63,87,146,55,
            87,83,27,8,140,8,140,8,8,8,
            140,51,27,28,95,177,179,179,8,27,
            27,151,27,27,179,27,69,27,58,178,
            51,51,36,135,27,114,81,64,63,38,
            87,131,19,27,99,46,86,27,87,114,
            135,27,135,87,27,179,179,160,30,27,
            30,30,151,27,27,151,27,104,49,114,
            135,51,51,64,63,130,13,13,148,99,
            87,87,27,87,27,140,165,135,8,143,
            162,179,178,87,27,87,87,151,51,151,
            102,53,179,114,137,133,27,148,27,15,
            10,135,81,64,64,87,146,55,110,46,
            87,51,87,87,135,36,178,126,8,15,
            27,27,179,162,121,151,30,151,151,87,
            27,27,35,121,140,114,148,50,105,36,
            48,27,50,8,51,27,33,81,38,169,
            87,165,121,15,36,51,8,162,179,87,
            27,102,179,27,102,89,140,112,27,60,
            50,64,8,51,38,87,87,51,36,179,
            51,27,137,114,36,87,162,179,151,27,
            87,95,51,64,27,121,51,114,140,151,
            87,87,64,140,151
        };
    };
    public final static char nasb[] = Nasb.nasb;
    @Override
    public final int nasb(int index) { return nasb[index]; }

    public interface Nasr {
        public final static char nasr[] = {0,
            103,116,101,100,87,99,98,1,0,1,
            140,0,52,0,80,0,94,0,103,116,
            102,101,100,87,99,98,0,60,29,7,
            30,0,132,0,7,50,0,32,0,7,
            117,0,7,119,0,112,0,110,7,59,
            5,0,133,0,24,7,0,137,0,128,
            0,7,5,41,0,5,7,0,5,139,
            0,87,81,82,83,84,93,72,53,0,
            75,0,136,24,0,114,24,0,31,7,
            1,34,96,0,34,1,50,71,7,31,
            0,92,0,7,28,45,43,48,0,64,
            63,45,43,28,0,24,63,64,7,0,
            7,45,43,28,0,7,60,89,0,24,
            64,63,43,45,7,0,43,45,7,12,
            0,5,59,57,0,7,31,28,61,0,
            1,34,7,35,0,64,63,28,0,31,
            66,7,67,0,105,7,60,0,125,7,
            31,0,7,30,118,0,30,7,26,0
        };
    };
    public final static char nasr[] = Nasr.nasr;
    @Override
    public final int nasr(int index) { return nasr[index]; }

    public interface TerminalIndex {
        public final static char terminalIndex[] = {0,
            87,2,89,99,88,9,97,98,10,11,
            86,8,95,3,6,7,70,83,84,85,
            12,13,96,50,78,66,94,71,100,46,
            57,62,65,74,79,1,92,47,48,51,
            52,53,59,60,61,67,73,29,42,93,
            49,54,58,63,64,68,69,76,77,80,
            81,82,56,72,75,16,17,30,31,4,
            14,15,18,19,20,21,91,43,44,22,
            23,24,25,26,5,27,28,32,33,34,
            35,36,37,38,39,40,41,55,101,90
        };
    };
    public final static char terminalIndex[] = TerminalIndex.terminalIndex;
    @Override
    public final int terminalIndex(int index) { return terminalIndex[index]; }

    public interface NonterminalIndex {
        public final static char nonterminalIndex[] = {0,
            107,0,0,0,109,113,0,114,115,116,
            117,186,0,0,0,118,119,120,121,122,
            123,124,0,104,0,106,125,187,130,108,
            134,142,0,126,129,0,0,0,0,0,
            103,162,164,0,165,0,0,167,0,105,
            152,166,141,0,0,0,112,128,0,156,
            163,177,178,179,0,133,0,151,174,0,
            132,144,0,168,172,173,176,0,111,0,
            145,146,147,148,149,150,153,0,155,159,
            161,191,194,110,127,131,135,136,137,138,
            139,140,143,0,154,158,0,160,171,181,
            0,188,0,190,0,193,102,0,0,0,
            0,157,0,169,170,175,180,0,182,183,
            0,184,185,0,0,189,0,0,192,195,
            0,0,0,0,0,0,0,0
        };
    };
    public final static char nonterminalIndex[] = NonterminalIndex.nonterminalIndex;
    @Override
    public final int nonterminalIndex(int index) { return nonterminalIndex[index]; }

    public interface ScopePrefix {
        public final static char scopePrefix[] = {
            198,254,330,216,310,121,147,153,282,95,
            359,381,338,1,104,137,163,183,63,262,
            320,35,59,71,77,109,159,233,298,71,
            420,424,355,377,390,404,390,344,15,27,
            56,8,8,113,116,168,116,193,116,243,
            248,251,307,428,50,83,89,129,237,83,
            401,411,411,8,129,272,206,368,206,272,
            20,20,41,229,41,41,41,41,41,305,
            399,20,20,45,142,171,142,171,171
        };
    };
    public final static char scopePrefix[] = ScopePrefix.scopePrefix;
    @Override
    public final int scopePrefix(int index) { return scopePrefix[index]; }

    public interface ScopeSuffix {
        public final static char scopeSuffix[] = {
            75,75,317,75,317,127,6,6,75,101,
            365,387,325,6,39,127,6,39,68,267,
            325,39,39,75,81,39,6,231,231,75,
            39,6,317,317,317,408,394,348,18,18,
            39,6,6,39,119,6,178,39,196,246,
            246,246,231,39,53,86,92,144,240,302,
            53,414,417,11,132,267,223,371,209,275,
            25,33,43,231,288,290,292,294,296,231,
            231,22,30,47,144,180,132,173,188
        };
    };
    public final static char scopeSuffix[] = ScopeSuffix.scopeSuffix;
    @Override
    public final int scopeSuffix(int index) { return scopeSuffix[index]; }

    public interface ScopeLhs {
        public final static char scopeLhs[] = {
            83,81,39,83,39,61,52,52,81,57,
            39,38,39,141,65,61,52,48,13,81,
            39,93,111,133,78,65,52,89,66,29,
            5,5,39,38,38,23,38,39,106,86,
            3,132,131,63,77,52,124,45,51,82,
            82,82,40,3,36,78,110,61,89,66,
            36,8,5,141,61,81,83,39,83,81,
            106,86,116,89,102,101,100,99,98,66,
            37,106,86,139,61,48,61,46,48
        };
    };
    public final static char scopeLhs[] = ScopeLhs.scopeLhs;
    @Override
    public final int scopeLhs(int index) { return scopeLhs[index]; }

    public interface ScopeLa {
        public final static byte scopeLa[] = {
            50,50,37,50,37,24,77,77,50,50,
            37,98,27,77,37,24,77,37,37,14,
            27,37,37,50,14,37,77,27,27,50,
            37,77,37,37,37,48,37,27,7,7,
            37,77,77,37,2,77,1,37,1,1,
            1,1,27,37,48,1,69,6,1,1,
            48,37,37,68,6,14,14,35,1,1,
            1,1,13,27,1,63,64,64,59,27,
            27,1,1,68,6,2,6,2,2
        };
    };
    public final static byte scopeLa[] = ScopeLa.scopeLa;
    @Override
    public final int scopeLa(int index) { return scopeLa[index]; }

    public interface ScopeStateSet {
        public final static char scopeStateSet[] = {
            48,48,113,48,113,92,99,99,48,39,
            113,113,113,6,103,92,99,17,52,48,
            113,48,14,8,124,103,99,10,33,110,
            129,129,113,113,113,165,113,113,1,27,
            129,4,6,103,105,99,29,17,20,48,
            48,48,113,129,113,124,199,92,10,33,
            113,136,129,6,92,48,48,113,48,48,
            1,27,49,10,49,49,49,49,49,33,
            113,1,27,31,92,17,92,17,17
        };
    };
    public final static char scopeStateSet[] = ScopeStateSet.scopeStateSet;
    @Override
    public final int scopeStateSet(int index) { return scopeStateSet[index]; }

    public interface ScopeRhs {
        public final static char scopeRhs[] = {0,
            158,68,158,36,0,103,0,158,36,0,
            30,128,103,0,190,128,0,187,0,128,
            0,159,187,0,159,0,151,128,0,152,
            187,0,152,0,179,2,13,0,104,0,
            203,0,194,0,158,0,30,128,0,239,
            39,0,29,129,0,129,2,0,235,2,
            212,0,234,2,2,7,0,104,104,0,
            196,107,14,0,105,0,224,107,131,0,
            185,0,107,131,0,169,185,0,229,107,
            0,31,151,0,180,227,107,14,159,0,
            105,0,0,174,107,2,163,0,174,107,
            2,0,177,2,0,161,107,0,177,0,
            107,149,6,149,161,0,172,0,149,161,
            0,9,0,0,172,0,107,149,6,149,
            0,149,0,9,0,0,127,28,209,107,
            36,0,127,209,107,28,36,0,127,28,
            36,0,127,209,107,36,0,127,36,0,
            145,0,2,0,170,104,0,167,0,2,
            104,0,174,107,2,145,0,2,0,168,
            104,0,151,2,0,162,0,180,207,107,
            14,101,223,63,0,223,63,0,107,3,
            0,0,0,105,0,180,207,107,14,223,
            63,0,3,0,0,0,105,0,160,0,
            106,0,222,107,160,0,107,160,0,157,
            106,0,188,63,0,107,0,188,65,0,
            188,64,0,204,107,14,221,101,220,187,
            0,221,101,220,187,0,3,0,0,105,
            0,220,187,0,107,0,3,0,0,105,
            0,204,107,14,220,187,0,148,0,147,
            0,146,0,145,0,144,0,197,107,131,
            0,135,106,0,131,0,130,46,0,167,
            126,167,166,2,43,0,104,129,0,167,
            166,2,43,0,106,0,104,129,0,167,
            126,167,126,167,2,43,0,167,126,167,
            2,43,0,167,2,43,0,106,0,106,
            0,104,129,0,130,2,35,0,130,2,
            35,135,42,0,104,106,0,135,42,0,
            79,2,108,104,106,0,130,2,47,0,
            135,124,130,2,45,0,55,129,0,130,
            2,45,0,104,129,55,129,0,134,0,
            158,39,0,130,87,122,0,29,125,0,
            179,2,0,104,114,0,104,112,0,219,
            2,105,0,130,36,105,0,130,2,0
        };
    };
    public final static char scopeRhs[] = ScopeRhs.scopeRhs;
    @Override
    public final int scopeRhs(int index) { return scopeRhs[index]; }

    public interface ScopeState {
        public final static char scopeState[] = {0,
            1996,1856,0,452,0,412,0,582,0,2945,
            1855,2890,0,588,518,0,2159,2101,1721,1996,
            2061,1856,2629,2110,1942,1888,1913,1832,1696,0,
            843,0,1788,1771,2812,1652,1635,0,687,659,
            556,589,654,528,417,2162,0,1279,424,388,
            0,3039,3030,2978,1996,2957,2061,2159,3009,1856,
            2101,2947,2736,1913,1832,1721,2110,2361,2217,2925,
            1696,2920,424,2916,1714,1685,1625,855,2554,1279,
            2637,2612,1762,2608,2880,2848,2577,1896,2286,2182,
            388,2839,2370,2816,2789,2211,2785,0,1454,1269,
            601,416,1721,2554,1942,1888,1829,2731,0,2780,
            2728,433,2489,2469,2448,2428,2387,2371,2329,2309,
            2288,2268,2227,1788,1771,1652,1635,0,2909,2901,
            2868,2820,2653,1325,1283,2243,1643,2162,617,1337,
            2079,2048,2547,2530,2175,720,445,2570,2130,2025,
            1971,1750,875,2769,2760,2739,2593,426,2721,2712,
            2703,2694,2681,639,1610,1583,1559,915,1532,687,
            1508,1481,659,589,759,1457,1429,1401,887,1373,
            1297,843,815,731,1255,1227,1199,1171,1143,1115,
            1087,1059,1031,1003,975,388,943,787,556,528,
            0
        };
    };
    public final static char scopeState[] = ScopeState.scopeState;
    @Override
    public final int scopeState(int index) { return scopeState[index]; }

    public interface InSymb {
        public final static char inSymb[] = {0,
            0,217,107,195,13,23,17,22,21,10,
            9,6,12,16,15,105,2,110,109,116,
            111,118,117,120,119,122,121,106,49,2,
            85,70,2,36,129,179,130,160,107,14,
            10,9,72,71,6,79,78,76,75,74,
            73,66,67,12,81,80,83,82,87,86,
            84,97,96,95,93,94,92,91,90,89,
            88,69,179,219,130,124,107,36,2,164,
            163,198,7,8,4,199,187,200,65,64,
            201,63,202,101,216,203,13,107,109,109,
            111,111,111,111,111,111,110,110,117,116,
            116,119,118,218,130,121,120,124,14,159,
            161,149,128,28,127,107,6,177,107,2,
            2,2,2,220,128,188,128,188,223,188,
            128,13,106,2,196,46,38,40,44,43,
            35,42,47,45,134,41,39,101,4,131,
            48,48,107,14,149,6,107,127,209,175,
            174,131,107,176,107,2,236,1,11,101,
            14,101,14,179,3,130,101,2,2,135,
            2,2,48,239,158,48,237,107,107,6,
            149,209,28,127,6,2,143,145,107,49,
            174,234,212,2,221,128,107,14,107,124,
            166,167,131,130,35,130,130,48,68,48,
            2,224,197,151,128,2,186,107,148,227,
            107,149,107,127,127,151,107,2,161,49,
            124,2,11,1,14,204,160,205,107,207,
            101,208,167,126,107,124,2,124,124,238,
            11,192,14,49,128,151,107,69,161,180,
            49,229,240,70,36,101,230,107,175,107,
            235,107,107,207,180,69,49,126,167,130,
            135,48,124,2,49,107,128,161,148,150,
            69,158,70,36,175,174,225,49,204,222,
            48,151,128,190,180,167,126,124,98,6,
            1,196,68,158,49,49,48,190,128,124,
            167,1,158,128,124
        };
    };
    public final static char inSymb[] = InSymb.inSymb;
    @Override
    public final int inSymb(int index) { return inSymb[index]; }

    public interface Name {
        public final static String name[] = {
            "",
            "[",
            "(",
            "{",
            ".",
            "->",
            "++",
            "--",
            "&",
            "*",
            "+",
            "-",
            "~",
            "!",
            "/",
            "%",
            ">>",
            "<<",
            "<",
            ">",
            "<=",
            ">=",
            "==",
            "!=",
            "^",
            "|",
            "&&",
            "||",
            "?",
            ":",
            "...",
            "=",
            "*=",
            "/=",
            "%=",
            "+=",
            "-=",
            ">>=",
            "<<=",
            "&=",
            "^=",
            "|=",
            ",",
            ">?",
            "<?",
            "$empty",
            "auto",
            "break",
            "case",
            "char",
            "const",
            "continue",
            "default",
            "do",
            "double",
            "else",
            "enum",
            "extern",
            "float",
            "for",
            "goto",
            "if",
            "inline",
            "int",
            "long",
            "register",
            "restrict",
            "return",
            "short",
            "signed",
            "sizeof",
            "static",
            "struct",
            "switch",
            "typedef",
            "union",
            "unsigned",
            "void",
            "volatile",
            "while",
            "_Bool",
            "_Complex",
            "_Imaginary",
            "integer",
            "floating",
            "charconst",
            "stringlit",
            "identifier",
            "Completion",
            "EndOfCompletion",
            "Invalid",
            "RightBracket",
            "RightParen",
            "RightBrace",
            "SemiColon",
            "typeof",
            "__alignof__",
            "__attribute__",
            "__declspec",
            "asm",
            "ERROR_TOKEN",
            "EOF_TOKEN",
            "no_sizeof_type_name_start",
            "]",
            ")",
            "}",
            ";",
            "identifier_token",
            "expression",
            "postfix_expression",
            "member_name",
            "type_id",
            "initializer_list",
            "unary_expression",
            "cast_expression",
            "multiplicative_expression",
            "additive_expression",
            "shift_expression",
            "relational_expression",
            "equality_expression",
            "and_expression",
            "exclusive_or_expression",
            "inclusive_or_expression",
            "logical_and_expression",
            "logical_or_expression",
            "assignment_expression",
            "expression_in_statement",
            "expression_list_actual",
            "constant_expression",
            "statement",
            "compound_statement",
            "block_item_list",
            "block_item",
            "declaration",
            "declaration_specifiers",
            "init_declarator_list",
            "simple_declaration_specifiers",
            "struct_or_union_declaration_sp" +
            "ecifiers",
            "elaborated_declaration_specifi" +
            "ers",
            "enum_declaration_specifiers",
            "typdef_name_declaration_specif" +
            "iers",
            "no_type_declaration_specifier",
            "type_qualifier",
            "no_type_declaration_specifiers",
            "simple_type_specifier",
            "struct_or_union_specifier",
            "elaborated_specifier",
            "enum_specifier",
            "type_name_specifier",
            "init_declarator",
            "complete_declarator",
            "initializer",
            "declarator",
            "struct_or_union",
            "struct_declaration_list",
            "struct_declaration",
            "specifier_qualifier_list",
            "struct_declarator_list",
            "complete_struct_declarator",
            "struct_declarator",
            "enumerator_list",
            "enumerator",
            "direct_declarator",
            "pointer_seq",
            "array_direct_declarator",
            "basic_direct_declarator",
            "array_modifier",
            "function_direct_declarator",
            "parameter_type_list",
            "function_declarator",
            "identifier_list",
            "array_modifier_type_qualifiers",
            "type_qualifier_list",
            "parameter_list",
            "parameter_declaration",
            "complete_parameter_declarator",
            "abstract_declarator",
            "direct_abstract_declarator",
            "basic_direct_abstract_declarat" +
            "or",
            "array_direct_abstract_declarat" +
            "or",
            "initializer_seq",
            "designated_initializer",
            "designation",
            "designator_list",
            "designator",
            "function_body",
            "attribute_or_decl_specifier",
            "attribute_or_decl_specifier_se" +
            "q",
            "word",
            "extended_decl_modifier_seq",
            "extended_decl_modifier",
            "extended_asm_param",
            "case_range_expression",
            "typeof_declaration_specifiers",
            "typeof_type_specifier",
            "field_name_designator"
        };
    };
    public final static String name[] = Name.name;
    public final String name(int index) { return name[index]; }

    public final static int
           ERROR_SYMBOL      = 29,
           SCOPE_UBOUND      = 88,
           SCOPE_SIZE        = 89,
           MAX_NAME_LENGTH   = 38;

    public final int getErrorSymbol() { return ERROR_SYMBOL; }
    public final int getScopeUbound() { return SCOPE_UBOUND; }
    public final int getScopeSize() { return SCOPE_SIZE; }
    public final int getMaxNameLength() { return MAX_NAME_LENGTH; }

    public final static int
           NUM_STATES        = 345,
           NT_OFFSET         = 100,
           LA_STATE_OFFSET   = 3605,
           MAX_LA            = 2147483647,
           NUM_RULES         = 387,
           NUM_NONTERMINALS  = 148,
           NUM_SYMBOLS       = 248,
           SEGMENT_SIZE      = 8192,
           START_STATE       = 485,
           IDENTIFIER_SYMBOL = 0,
           EOFT_SYMBOL       = 99,
           EOLT_SYMBOL       = 99,
           ACCEPT_ACTION     = 3079,
           ERROR_ACTION      = 3218;

    public final static boolean BACKTRACK = true;

    public final int getNumStates() { return NUM_STATES; }
    public final int getNtOffset() { return NT_OFFSET; }
    public final int getLaStateOffset() { return LA_STATE_OFFSET; }
    public final int getMaxLa() { return MAX_LA; }
    public final int getNumRules() { return NUM_RULES; }
    public final int getNumNonterminals() { return NUM_NONTERMINALS; }
    public final int getNumSymbols() { return NUM_SYMBOLS; }
    public final int getSegmentSize() { return SEGMENT_SIZE; }
    public final int getStartState() { return START_STATE; }
    public final int getStartSymbol() { return lhs[0]; }
    public final int getIdentifierSymbol() { return IDENTIFIER_SYMBOL; }
    public final int getEoftSymbol() { return EOFT_SYMBOL; }
    public final int getEoltSymbol() { return EOLT_SYMBOL; }
    public final int getAcceptAction() { return ACCEPT_ACTION; }
    public final int getErrorAction() { return ERROR_ACTION; }
    public final boolean isValidForParser() { return isValidForParser; }
    public final boolean getBacktrack() { return BACKTRACK; }

    public final int originalState(int state) {
        return -baseCheck[state];
    }
    public final int asi(int state) {
        return asb[originalState(state)];
    }
    public final int nasi(int state) {
        return nasb[originalState(state)];
    }
    public final int inSymbol(int state) {
        return inSymb[originalState(state)];
    }

    public final int ntAction(int state, int sym) {
        return baseAction[state + sym];
    }

    public final int tAction(int state, int sym) {
        int i = baseAction[state],
            k = i + sym;
        return termAction[termCheck[k] == sym ? k : i];
    }
    public final int lookAhead(int la_state, int sym) {
        int k = la_state + sym;
        return termAction[termCheck[k] == sym ? k : la_state];
    }
}
